package com.sf.fy.uav.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sf.fy.uav.common.request.operate.CouponIntroductionReq;
import com.sf.fy.uav.common.response.operational.*;
import com.sf.fy.uav.common.response.order.CouponPriceResponse;
import com.sf.fy.uav.common.utils.Rs;
import com.sf.fy.uav.entity.UserCoupon;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author LTQ
 * @since 2023-10-07
 */
public interface IUserCouponService extends IService<UserCoupon> {

    /**
     * 获取可用优惠券
     *
     * @param page
     * @param size
     * @param price
     * @param isMustStart
     * @return
     */
    UserCouponRsResponse getAvailableCoupons(Integer page, Integer size, BigDecimal price, Integer isMustStart);

    /**
     * 获取不可用优惠券
     *
     * @param price
     * @return
     */
    UserCouponRsResponse getUnavailableCoupons(Integer page, Integer size, BigDecimal price);

    /**
     * 定向发放优惠券
     *
     * @param couponIntroductionReq
     * @return
     */
    Rs<CouponIntroductionResult> introduction(CouponIntroductionReq couponIntroductionReq);

    /**
     * 获取已过期或者已使用
     *
     * @param size
     * @param page
     * @return
     */
    ExpireOrUsedUserRsCouponResponse getExpireOrUsedCoupons(Integer page, Integer size);

    /**
     * 计算价格
     *
     * @param price
     * @param id
     * @return
     */
    CouponPriceResponse calculatePrice(BigDecimal price, String id);

    /**
     * 获取有效优惠券
     *
     * @param price
     * @param id
     * @return
     */
    UserCoupon getEffectiveCoupon(BigDecimal price, String id);
}
